﻿
import java.text.DateFormat;
import java.time.LocalDate;
import java.util.Random;
import java.util.Date;
import java.util.Calendar;

public class DateSort1 {

    public static void main( String[] args ) {

        final Random random = new Random();

        final Calendar calendar = Calendar.getInstance();

        final Date[] dates = new Date[ 5 ] ;

        // 使用循环对 dates 数组进行初始化
        for( int i = 0 ; i < dates.length ; i++){
            // 随机产生 年份、月份、日期，并将其设置到 calendar 对象中
            int years =  random.nextInt(2020);
            int months = random.nextInt(12) + 1;
            int days;
            switch ( months ){
                case 1: case 3: case 5: case 7: case 8: case 10: case 12:
                    days = random.nextInt(31)+1;break;
                case 2:
                    if ( years % 4 == 0 && years % 100 == 0 || years % 400 ==0){
                        days = random.nextInt( 29 ) + 1;
                    }else days = random.nextInt( 28 ) +1;break;
                default:days = random.nextInt( 30 ) +1 ;break;
            }

            calendar.clear();
            calendar.set(years , months ,days);

            // 随后使用 calendar 的 getTime 来获取 Date 实例
            Date date = calendar.getTime() ;
            dates[ i ] = date ;
        }

        // 使用循环输出排序前的日期

        System.out.println("排序前的日期：");
        for (int i = 0 , n = dates.length; i < n ; i++){
            DateFormat df = DateFormat.getDateInstance();
            String d = df.format( dates[i] );
            System.out.println( d );
        }

        Date[] a = new Date[1];
        // 使用 Date 类提供的方法，对日期进行比较并排序
        for (int i = 0; i < dates.length ; i++) {
            for (int j = 0; j < dates.length - i - 1 ; j++) {
                if (dates[j].after(dates[j+1])){
                    a[0] = dates[j];
                    dates[j] = dates[j+1];
                    dates[j+1] = a[0];
                }
            }
        }

        // 使用循环输出排序后的日期
        System.out.println("排序后的日期：");
        for (int i = 0 , n = dates.length; i < n ; i++){
            DateFormat df = DateFormat.getDateInstance();
            String d = df.format( dates[i] );
            System.out.println( d );
        }


    }

}
